The present invention is directed to technology for licensing software.
In modern computing environments, software programs are often accessed by multiple users distributed across many nodes of computer networks. Multiple instances of a given software program may run on various nodes of the network simultaneously with each node providing simultaneous access to the software program by multiple users.
Software programs capable of such access typically limit the number of simultaneous users through software licensing. Users seeking to access licensed software must be allocated a valid user license in order to interact with the software. If an insufficient number of licenses are available, additional users will be unable to access the licensed software once all available licenses are exhausted. Although administrators can purchase additional licenses for a given software program, it can be prohibitively expensive for administrators to provide an unlimited number of software licenses.
As a result, various licensing management software packages are available which allow administrators to allocate, monitor, and deallocate software licenses. However, certain prior art licensing management software requires administrators to accept trade-offs between the availability of realtime management of software licenses, and additional processing overhead incurred by such realtime management. This overhead introduces inefficiencies that can quickly reach unacceptable levels, especially during network traffic peaks.
Other prior art approaches merely estimate a number of user licenses in use at a single point in time, such as during the boot time of the licensing management software. Although such approaches may incur less realtime processing overhead, they nevertheless fail to provide an accurate realtime count of the number of licenses actually in use. FIG. 1 provides a flow chart 10 of one such prior art method. At step 12, licensing management software is booted. At boot time, the licensing management software estimates the number of users currently accessing the licensed software (step 14). This estimation may be based on a configuration file of the particular software program to be licensed. At step 16, the licensing management software determines the total number of licenses available system-wide for the licensed software. At step 18, an additional number of failover licenses are added to the total licenses determined in step 16. In step 20, a portion of the total licenses are allocated to the users estimated in step 14. In step 22, additional user licenses beyond those all already allocated during step 20 are further allocated to additional users as they attempt to access the licensed software, until a maximum number of licenses have been allocated equal to the sum of the total licenses determined in step 16 and the failover licenses determined in step 18.
In real world situations, the number of users attempting to access licensed software can change dramatically over time. For example, software applications used in the processing of Automated Teller Machine transactions may experience a high traffic volume during the noon lunch hour, but much lower traffic during the early morning. In such a scenario, an estimate of the number of users made at a given point in time, such as in step 14 of FIG. 1, will not necessarily be an accurate estimate of the number of users at other times of the day. If the estimate of step 14 is inaccurate, then the number of licenses available for allocation will not necessarily be representative of the actual number of available licenses. In the example above, a user seeking to access an Automated Teller Machine during peak traffic periods may receive a notification that a bank's computer system does not have enough software licenses to access the user's bank account. Such a situation is unacceptable for both consumers as well as businesses relying on realtime access to licensed software running on the Automated Teller Machine.
The prior art method of FIG. 1 also fails to allocate licenses efficiently in response to failover situations. For example, if a node of a distributed computer network fails, the prior art technique of FIG. 1 provides no way to deallocate licenses previously allocated to the failed node. Licenses from the failed node are “lost” to the failed node and not reallocated among the remaining functional nodes. All users across the network are effectively “locked out” from using licenses that have been paid for, but are nevertheless lost to the failed node.
The method of FIG. 1 provides for the allocation of additional “failover licenses” in step 18 in an attempt to minimize these effects. The failover licenses are extra licenses that can be allocated to users of properly functioning nodes in order to compensate for the loss of any licenses in use at a failed node. However, since system administrators are unable to predict which nodes will fail or when they will fail, the number of failover licenses determined in step 18 is merely an estimate. If administrators provide enough failover licenses to handle a single node failure, an additional node failure may still exhaust all available failover licenses. In such a scenario, users remain locked out of the licenses allocated to a first failed node, as well as all failover licenses allocated to a second failed node. Clearly, prior art licensing management software fails to efficiently allocate, monitor, or deallocate software licenses, or effectively address the problems caused by failover conditions.